/*	ver 100


*/


#ifndef ALGORITMOS_H
#define ALGORITMOS_H

#define CALIBRACION 4
#define FILTRO  16

class Algoritmos
{
public:
    Algoritmos();
    void initialize(char _nombre,float _ts);
	void procesar(int value);
    void filtrar(double*);

    void setMuestrasFiltro(int);
    void setSamplingRate(float _ts){ts=_ts;}
    bool hayVectoresAceleracion();		
    double getStep();
    int getOffset();
    double vectorAceleracion();
    double vectorVelocidad();
    double vectorPosicion();
    double getPosicion();     


    

private:
	char nombre;
	float ts;
    double velocidad[20000];
    double posicion[20000];
    double aceleracion[20000];
    int acel_write_index;
    int acel_read_index;
    int vel_read_index;
    int pos_read_index;

    int countSamples;
    int offset;        

    bool endMovement;
    bool startSpeed;
    bool reachZero;
    bool calibrar;
    bool movementEndCheck();
	bool IsInWindow(double valor);
	int	startMoveIndex;
	double step;
	float  porcentajeDeVentana	;
};

#endif // ALGORITMOS_H
